home *** CD-ROM | disk | FTP | other *** search
/ Software of the Month Club 2000 October / Software of the Month - Ultimate Collection Shareware 277.iso / pc / PROGRAMS / UTILITY / WINLINUX / DATA1.CAB / programs_-_include / ASM-ALPH.{_4 / PTRACE.H < prev    next >
C/C++ Source or Header  |  1999-09-17  |  2KB  |  76 lines

  1. #ifndef _ASMAXP_PTRACE_H
  2. #define _ASMAXP_PTRACE_H
  3.  
  4.  
  5. /*
  6.  * This struct defines the way the registers are stored on the
  7.  * kernel stack during a system call or other kernel entry
  8.  *
  9.  * NOTE! I want to minimize the overhead of system calls, so this
  10.  * struct has as little information as possible.  I does not have
  11.  *
  12.  *  - floating point regs: the kernel doesn't change those
  13.  *  - r9-15: saved by the C compiler
  14.  *
  15.  * This makes "fork()" and "exec()" a bit more complex, but should
  16.  * give us low system call latency.
  17.  */
  18.  
  19. struct pt_regs {
  20.     unsigned long r0;
  21.     unsigned long r1;
  22.     unsigned long r2;
  23.     unsigned long r3;
  24.     unsigned long r4;
  25.     unsigned long r5;
  26.     unsigned long r6;
  27.     unsigned long r7;
  28.     unsigned long r8;
  29.     unsigned long r19;
  30.     unsigned long r20;
  31.     unsigned long r21;
  32.     unsigned long r22;
  33.     unsigned long r23;
  34.     unsigned long r24;
  35.     unsigned long r25;
  36.     unsigned long r26;
  37.     unsigned long r27;
  38.     unsigned long r28;
  39.     unsigned long hae;
  40. /* JRP - These are the values provided to a0-a2 by PALcode */
  41.     unsigned long trap_a0;
  42.     unsigned long trap_a1;
  43.     unsigned long trap_a2;
  44. /* These are saved by PAL-code: */
  45.     unsigned long ps;
  46.     unsigned long pc;
  47.     unsigned long gp;
  48.     unsigned long r16;
  49.     unsigned long r17;
  50.     unsigned long r18;
  51. };
  52.  
  53. /*
  54.  * This is the extended stack used by signal handlers and the context
  55.  * switcher: it's pushed after the normal "struct pt_regs".
  56.  */
  57. struct switch_stack {
  58.     unsigned long r9;
  59.     unsigned long r10;
  60.     unsigned long r11;
  61.     unsigned long r12;
  62.     unsigned long r13;
  63.     unsigned long r14;
  64.     unsigned long r15;
  65.     unsigned long r26;
  66.     unsigned long fp[32];    /* fp[31] is fpcr */
  67. };
  68.  
  69. #ifdef __KERNEL__
  70. #define user_mode(regs) ((regs)->ps & 8)
  71. #define instruction_pointer(regs) ((regs)->pc)
  72. extern void show_regs(struct pt_regs *);
  73. #endif
  74.  
  75. #endif
  76.